/**********************  机构部门管理  *****************************/
	var _common = xbdunRequire("common");
	var _targeTable = null;// 部门角色表格
	var _orgTargeTable = null;// 机构角色表格
	var departNode = null;// 部门选中节点
	var orleDepartId = 0;//部门角色中间表ID
	var orleDepartPower = null;//部门角色已授权菜单集合
	
	$(function() {
		/************************   新增部门按钮    ***************************/
		$("#btn_100101102100").on("click",function(){
			if (departNode) {
				if (departNode.level >= 3) {// 选择第三级部门
					return _common.alert(true, "当前为第三级部门,不能再添加部门");
				}
			}
			$('#frm_add_depart').get(0).reset();//清空新增部门信息
			$("#add_depart_father").val(departNode==null?'根目录':departNode.name);//设置新增部门的上级部门
			$("#bs-100101102100-modal-lg").modal("show");
		})
		/************************   保存新增部门    ***************************/
		$("#btn_100101102100_save").on("click",function(params){
			var temp = {
				code : departNode==null?0:departNode.id ,	// 部门编码
				departName : $("#add_depart_name").val(),	// 部门名称
				remark : $("#add_depart_remark").val()		// 部门描述
			};
			if (!temp.departName.trim() || !temp.remark.trim()) {
				return _common.alert(true,"请填写完整部门信息.");
			}
			$("#bs-100101102100-modal-lg").modal("hide");
			_common.loading(true,"正在提交数据,请稍等...");
			submitData("100101102100", temp, {success:function(){setTimeout(reLoadDepartTree,500);}})
		})
		
		/************************   修改部门按钮    ***************************/
		$("#btn_100101102101").on("click",function(){
			if (departNode) {
				if (departNode.level == 0) {
					return _common.alert(true, "当前为根目录,不能修改");
				}
				$('#frm_update_depart').get(0).reset();//清空修改部门信息
				$("#update_depart_self").val(departNode.name);//设置修改部门的当前部门
				$("#update_depart_name").val(departNode.name);
				$("#update_depart_remark").val(departNode.title);
				$("#bs-100101102101-modal-lg").modal("show");
			} else {
				_common.alert(true,"请选择需要修改的部门.");
			}
		})
		/************************   保存修改部门    ***************************/
		$("#btn_100101102101_save").on("click",function(params){
			var temp = {
				code : departNode.id ,					// 部门编码
				departName : $("#update_depart_name").val(),// 部门名称
				remark : $("#update_depart_remark").val()	// 部门描述
			};
			if (!temp.departName.trim() || !temp.remark.trim()) {
				return _common.alert(true,"请填写完整部门信息.");
			}
			$("#bs-100101102101-modal-lg").modal("hide");
			_common.loading(true,"正在保存中...");
			$.post(webRoot+"/system/100101102101",temp,function(result){
				setTimeout(function(){
					_common.loading(false);
					if(result){
						if(result.success){
							reLoadDepartTree();
						}else{
							_common.alert(true,result.subMsg);
						}
					}
				},1000)
			})
		})
		
		/************************   删除部门按钮    ***************************/
		$("#btn_100101102102").on("click",function(){
			if (!departNode) {
				return _common.alert(true,"请选择要删除的部门.");
			}
			if (departNode.level == 0) {
				return _common.alert(true, "当前为根目录,不能删除");
			}
			if (departNode.isParent){
				return _common.alert(true,"该部门下还存在子部门");
			}
			if ("" != _targeTable.getData()){
				return _common.alert(true,"该部门下还存在角色");
			}
			_common.alert(true,"你确定要进行这样的操作吗",function(val){if (val == 1) {
				var temp = {id:departNode.id};//部门编码
				submitData("100101102102", temp, {success:function(data){setTimeout(reLoadDepartTree,500);}})
			}},2);
		})
		
		/************************   新增角色按钮    ***************************/
		$("#btn_100101102103").on("click",function(){
			if (!departNode) {
				_common.alert(true,"请选择需要添加角色的部门.");
			} else {
				if (departNode.level == 0) {
					return _common.alert(true, "当前为根目录,不能添加角色");
				}
				_common.loading(true,"正在拼命获取角色,请稍后...");
				_orgTargeTable = new OrgTableInit($('#tb_depart_add_role_list'));
			}
		})
		
		/*****************************   新增角色提交   *****************************/
		$("#btn_100101102103_save").on("click",function(){
			var _selectOtpns = _orgTargeTable.getSelections();
			var ids= [];
			$.each(_selectOtpns, function(i,n){
				ids.push(n.id);
			});
			var temp = {
				departCode:departNode.id,//部门code
				//blspacialRole: ,//是否为特殊部门
				roleIdStr:ids.join(",")//新增角色id
			};
			$("#bs-100101102103-modal-lg").modal("hide");
			submitData("100101102103X", temp, {success:function(){setTimeout(_targeTable.refresh,500);}})
		})
		
	});
	
	/**************************** 当前部门的角色列表 ****************************/ 
	var TableInit = function(targeTbArg) {
		var oTableInit = new Object();
		// 得到查询的参数
		oTableInit.queryParams = function(params) {
			var temp = {
				pageSize: params.pageSize, 		//页面大小
				pageIndex : params.pageIndex, 	//页码
				departCode:departNode.id		// 部门编号 
			};
			return temp;
		};
		// 初始化Table
		oTableInit.Init = function() {
			return targeTbArg.bootstrapTable("destroy").bootstrapTable({
				url : webRoot+'/system/100101102106X', // 请求后台的URL（*）
				queryParams : oTableInit.queryParams,// 传递参数（*）
				uniqueId : "id", // 每一行的唯一标识，一般为主键列
				onLoadSuccess:function(d){
					if(d.success){
						if (d.data.data.length) {
							return _targeTable.resetView({height:($('#ifrmContent', parent.document).height()-270)})
						}
					}
					_targeTable.resetView({height:($('#ifrmContent', parent.document).height()-217)})
				},
				height:($('#ifrmContent', parent.document).height()-217),
				pageSize:5,
				columns : [{
					title:'序号',
					align:"center",
					formatter:function(value,row,index){
						return index+1;
					},
				},{
					field : 'roleName',
					title : '角色名称',
					align:"center"
				},{
					field : 'roleShort',
					title : '角色缩写',
					align:"center"
				},{
					field : 'optionUser',
					title : '创建人',
					align:"center"
				},{
					field:"createTime",
					title:"创建时间",
					align:"center",
					formatter:function(v){
						 if(v){return v.substring(0,10);}
					}
				},{
					title:"操作",
					formatter:function(value,row,index){
						var _button = [];
						if ($("#btn_100101102104").size()>0){
							_button[_button.length]="<button type='button' class='btn btn-warning btn-xs' onclick='setPower("+row.id+")'>设置权限</button>";
						}
						if ($("#btn_100101102105").size()>0){
							_button[_button.length]="<button type='button' class='btn btn-danger btn-xs' onclick='deleteRole("+row.id+")'>删除</button>";
						}
						return _button.join("");
					},
					visible:($("#btn_100101102105").size()>0||$("#btn_100101102104").size()>0?true:false)
				}
				]
			});
		};
		//设置获取选择行
		oTableInit.getSelections = function(){return targeTbArg.bootstrapTable('getSelections');}
		//销毁table
		oTableInit.destroy = function(){return targeTbArg.bootstrapTable('destroy');}
		//设置获取所有数据
		oTableInit.getData = function(){return targeTbArg.bootstrapTable('getData');}
		//重新设置视图
		oTableInit.resetView = function(height){return targeTbArg.bootstrapTable('resetView',height);}
		//刷新列表
		oTableInit.refresh = function(){return targeTbArg.bootstrapTable('refresh');}
		oTableInit.Init();
		return oTableInit;
	}
	
	/************************   初始化当前机构的部门树  ***************************/
	setTimeout(function(){
		$("#x_content_info").text("正在拼命地加载中,请稍后...");
		var set = {onClick:onClick};
		loadingTree(set,{url:"100101102106",fnSubmit:function (reslt,setting){
			if (reslt.success) {
				if (reslt.data) {
					$("#x_content_info").empty();
					$.fn.zTree.init($("#departTree"), setting, reslt.data);
					$.fn.zTree.getZTreeObj("departTree").expandAll(true);// 将加载的树全部展开
				}else{
					$("#x_content_info").text("未查询到数据");
				}
			}else{
				$("#x_content_info").empty().html("<strong>加载数据出错：</strong>"+reslt.subMsg);
			}
		}})
	},1000)
	
	/************************   重新加载部门树    ***************************/
	function reLoadDepartTree(){
		departNode = null;
		$("#x_content_info").text("正在拼命地加载中,请稍后...");
		$("#x_content_03").text("请点击左侧部门获取部门角色");
		
		$.fn.zTree.destroy("departTree");//销毁部门树
		$('#tb_depart_role_list').bootstrapTable("destroy");//将表格销毁
		
		var set = {onClick:onClick};
		loadingTree(set,{url:"100101102106",fnSubmit:function (reslt,setting){
			if (reslt.success) {
				if (reslt.data) {
					$("#x_content_info").empty();
					$.fn.zTree.init($("#departTree"), setting, reslt.data);
					$.fn.zTree.getZTreeObj("departTree").expandAll(true);// 将加载的树全部展开
				}else{
					$("#x_content_info").text("未查询到数据");
				}
			}else{
				$("#x_content_info").empty().html("<strong>加载数据出错：</strong>"+reslt.subMsg);
			}
		}})
	}
	
	/************************   点击部门事件    ***************************/
	function onClick(event, treeId, treeNode, clickFlag) {
		departNode = treeNode;
		$("#x_content_02").show(100);
		$("#x_content_03").html("");
		if (treeNode.level==0){
			if(_targeTable){
				_targeTable.destroy();
			}
			$("#x_content_03").html("根目录下不存在角色");
		}else{
			_targeTable = new TableInit($('#tb_depart_role_list'));//加载该部门的角色列表
		}
	}
	
	/*************
	 * 	加载树
	 * 
	 * @param params {loading 是否显示加载框,open 是否全部展开,treeName 树形结构ID,url 查询地址}
	 * @param setting
	 * @returns
	 */
	function loadingTree(set,params){
		var setting = {
			data:{
				key:{title:"title"},
				simpleData:{enable:true,pIdKey:"pid"}
			},
			view:{
				fontCss:{'font-weight':'bold'},showIcon:false
			},
			check: {
				enable:set.checkEnable==undefined?false:set.checkEnable,
			},
			callback: {
				onAsyncSuccess: set.onAsyncSuccess,
				beforeClick:set.beforeClick,
				onClick:set.onClick
			}
		};
		$.ajax({type:"post",url:webRoot+"/system/"+params.url,data:params.temp==undefined?null:params.temp,async:false,
			success : function (data){
				setTimeout(function(){params.fnSubmit(data,setting);},1000);
			}
		})
	}
	
	/*********************
	 * 	调用ajax
	 * 
	 * @param url		地址
	 * @param temp		上传参数
	 * @param fnSubmit	回调函数 {success:fn,fail:fn,init:,complete}
	 * @returns
	 */
	function submitData(url, temp, fnSubmit){
		if (fnSubmit.init) {
			fnSubmit.init();
		}
		$.ajax({
			type:"post",
			url:webRoot+"/system/"+url,
			data:temp,
			async:false,
			success : function(data) {
				if (data) {
					if (data.success) {
						setTimeout(function(){if(fnSubmit.success){fnSubmit.success(data)}},500);
					} else {
						_common.loading(false);
						setTimeout(function(){if(fnSubmit.fail){fnSubmit.fail(data)};_common.alert(true,data.subMsg);},500);
					}
				}
			},
			complete:function (){
					_common.loading(false);
					if (fnSubmit.complete){
						fnSubmit.complete();
					}
			}
		})
	}
	
	/**********************************
	 * 如果角色的权限不为空,将机构所有的权限上勾选上
	 * @param data
	 * @returns
	 */
	function checkNodes(data){
		setTimeout(function(){
			var menuObj = $.fn.zTree.getZTreeObj("menuTree");
			menuObj.checkAllNodes(false);// 将企业所有菜单全部不勾选
			var menuNodes = menuObj.transformToArray(menuObj.getNodes());
			if (data.data) {
				orleDepartPower = data.data;
				$.each(menuNodes,function(i,n){
					$.each(data.data,function(j,m){
						if (m == n.id){
							menuObj.checkNode(menuNodes[i], true, false);
						}
					});
				});
			}
			_common.loading(false);
			$("#bs-100101102104-modal-lg").modal("show");
		},500);
	}
	
	/*****************************   设置权限按钮   *****************************/
	function setPower(id){
		orleDepartId = id;
		
		if ($.fn.zTree.getZTreeObj("menuTree") == null){
			_common.loading(true,"正在加载中...");
			var set = {checkEnable:true,onClick:onClick,onAsyncSuccess:loadingDepartMenus()};
			loadingTree(set,{url:"100101102104",fnSubmit:function (reslt,setting){
				_common.loading(false);
				if (reslt.success) {
					if (reslt.data) {
						$.fn.zTree.init($("#menuTree"), setting, reslt.data);
						$.fn.zTree.getZTreeObj("menuTree").expandAll(true);// 将加载的树全部展开
					}else{
						_common.alert(true,"未查询到数据");
					}
				}else{
					_common.alert(true,"加载数据出错："+reslt.subMsg);
				}
			}})
		} else {
			loadingDepartMenus();
		}
	}
	/*********************************
	 * 查询该机构的所有权限后 查询该角色的权限
	 * @param data
	 * @returns
	 */
	function loadingDepartMenus(){
		setTimeout(function(){
			var treeObj = $.fn.zTree.getZTreeObj("menuTree");
			if (treeObj) {
				$.post(webRoot+"/system/100101102104X",{orleDepartId:orleDepartId},function(result){
					var menuObj = $.fn.zTree.getZTreeObj("menuTree");
					menuObj.checkAllNodes(false);// 将企业所有菜单全部不勾选
					var menuNodes = menuObj.transformToArray(menuObj.getNodes());
					if (result.data) {
						orleDepartPower = result.data;
						$.each(menuNodes,function(i,n){
							$.each(orleDepartPower,function(j,m){
								if (m == n.id){
									menuObj.checkNode(menuNodes[i], true, false);
								}
							});
						});
					}
					$("#bs-100101102104-modal-lg").modal("show");
				})
			}else{
				loadingDepartMenus();
			}
		},1000)
	}
	
	/*****************************   保存设置权限按钮   *****************************/
	$("#btn_100101102104_save").on("click",function(){
		var treeObj = $.fn.zTree.getZTreeObj("menuTree");
		var checkedNodes = treeObj.getCheckedNodes(true);
		
		var addMenuCode = getAddCodes(checkedNodes,orleDepartPower);// 获取新增菜单编码
		var delMenuCode = getCancelCodes(checkedNodes,orleDepartPower);// 获取取消菜单编码
		
		var temp = {orleDepartId:orleDepartId,addMenuCodeStr:addMenuCode.join(","),delMenuCodeStr:delMenuCode.join(",")}
		
		_common.loading(true,"正在保存,请稍后...");
		$.post(webRoot+"/system/100101102104XX",temp,function(result){
			setTimeout(function(){
				_common.loading(false);
				if(result){
					if(result.success){
						$("#bs-100101102104-modal-lg").modal("hide");
						_targeTable.refresh();
					}else{
						_common.alert(true,result.subMsg);
					}
				}
			},1000)
		})
	})
	
	/*****************************     删除角色    *****************************/
	function deleteRole(id){
		_common.alert(true,"确定要执行删除该角色.",function(val){if(val==1){
			setTimeout(function(){
				var temp = {id:id};
				_common.loading(true,"正在保存,请稍后...");
				$.post(webRoot+"/system/100101102105",temp,function(result){
					setTimeout(function(){
						_common.loading(false);
						if(result){
							if(result.success){
								_targeTable.refresh();
							}else{
								_common.alert(true,result.subMsg);
							}
						}
					},1000)
				})
			},300)
		}},2);
	}
